package com.pactear.madp.lambda;

import java.util.stream.IntStream;

/**
 * All rights Reserved, Designed By teana@sina.cn.
 *
 * @Author: Deming.Chang
 * @Email: teana@sina.cn
 * @Date: 2018/10/16 下午11:16
 * @Version: 1.0.0
 * @Copyright: 2018
 * @Description:
 */
public class MinDemo {

    public static void main(String[] args){
        int[] nums = {33, 44, 99, -88, 66};
        // 命令式
        System.out.println(cmd(nums));
        // 函数式
        System.out.println(lambda(nums));
    }

    // jdk < 8
    // 命令式编程 -> 告诉程序实现细节
    // 单线程
    public static int cmd(int[] nums){
        int min = Integer.MAX_VALUE;
        for(int i : nums){
            if(i < min){
                min = i;
            }
        }
        return min;
    }

    // jdk >= 8
    // 函数式编程 -> 告诉程序执行结果，不关注实现细节
    // parallel -> 多线程并行（流并行执行）
    public static int lambda(int[] nums){
        //return IntStream.of(nums).min().getAsInt();
        return IntStream.of(nums).parallel().min().getAsInt();
    }

}
